package com.zcy.utils;

import com.zcy.model.Brand;
import com.zcy.model.Cell;
import com.zcy.model.Layer;
import com.zcy.model.Map;

import java.awt.*;

public class MapUtils {
    public static Map builerMap(){
        Map m = new Map();
        //层高
        m.setFloorHeight(3);
        //添加图层
        Layer l1 = LayerUtils.builderLayer(6,6);
        Layer l2 = LayerUtils.builderLayer(6,6);
        Layer l3 = LayerUtils.builderLayer(6,6);
        //构建图层链式关系
        l3.setParent(l2);
        l2.setParent(l1);
        l1.setParent(null);
        //添加集合数据
        m.getList().add(l1);
        m.getList().add(l2);
        m.getList().add(l3);
        return m;
    }
    //判断上下级
    public static boolean compare(Brand brand, Layer layer) {
        if (layer != null) {
            //获取所有格子
            Cell[][] cells = layer.getCells();
            for (int row = 0; row < cells.length; row++) {
                for (int col = 0; col < cells[row].length; col++) {
                    Cell cell = cells[row][col];
                    //判断是否有牌
                    if (cell.getState() == 1) {
                        Rectangle temp = cell.getBrand().getBounds();
                        Rectangle rect = brand.getBounds();
                        //判断两个矩阵是否有交集
                        boolean result = rect.intersects(temp);
                        if (result) {
                            //有交集 上层有遮盖
                            return result;
                        }
                    }
                }
            }

            //需要判断是否有上一级
            if (brand.getParent() != null) {
                //使用第一个调用
                return compare(brand, layer.getParent());
            } else {
                return false;
            }
        }
        return false;
    }
    //    public static boolean compare(Brand brand,Layer layer){
//        if (layer != null){
//            //获取所有格子
//            Cell[][] cells = layer.getCells();
//            for(int row = 0;row < cells.length;row++){
//                for (int col = 0;col < cells[row].length;col++){
//                    Cell cell = cells[row][col];
//                    //判断是否有牌
//                    if (cell.getState() == 1){
//                        Rectangle temp = cell.getBrand().getBounds();
//                        Rectangle rect = brand.getBounds();
//                        boolean result = temp.intersects(rect);
//                        if (result){
//                            //游交集 上层有遮盖
//                            return result;
//                        }
//                    }
//                }
//            }
//            if (layer.getParent() != null){
//                //使用第一个调用
//                return compare(brand,layer.getParent());
//            }else {
//                return false;
//            }
//        }
//        return false;
//    }
}
